package com.zhangtai.modules.entity.employee;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zhangtai.config.LongJsonDeserializer;
import com.zhangtai.config.LongJsonSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
	

/**
 * 
 *
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2020-08-04 11:02:39
 */
@Data
@TableName("tb_promotion")
public class PromotionEntity implements Serializable {
	private static final long serialVersionUID = 1L;

			/**
		 * 晋升Id
		 */
				@TableId
				@ApiModelProperty(value="晋升Id",required = false)
		@JsonDeserialize(using = LongJsonDeserializer.class)
		@JsonSerialize(using = LongJsonSerializer.class)
			private Long promotionId;
			/**
		 * 员工id
		 */
			@ApiModelProperty(value="员工id",required = false)
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long oid;
			/**
		 * 工号
		 */
			@ApiModelProperty(value="工号",required = false)
			private String code;

			/**
		 * 部门id
		 */
			@ApiModelProperty(value="部门id",required = false)
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long beforeUnitId;

			/**
		 * 公司id
		 */
			@ApiModelProperty(value="公司id",required = false)
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long beforeOrgId;

			/**
		 * 职位id
		 */
			@ApiModelProperty(value="职位id",required = false)
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long beforeJobId;
			/**
		 * 晋升日期
		 */
			@ApiModelProperty(value="晋升日期",required = false)
			private Date promotionDate;
			/**
		 * 晋升类型，1：专业职级晋升，2：管理职级晋升
		 */
			@ApiModelProperty(value="晋升类型，1：专业职级晋升，2：管理职级晋升",required = false)
			private Integer promotionType;

			/**
		 * 晋级后部门id
		 */
			@ApiModelProperty(value="晋级后部门id",required = false)
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long afterUnitId;

			/**
		 * 晋级后公司ID
		 */
			@ApiModelProperty(value="晋级后公司ID",required = false)
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long afterOrgId;

			/**
		 * 晋级后岗位id
		 */
			@ApiModelProperty(value="晋级后岗位id",required = false)
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long afterJobId;
			/**
		 * 
		 */

			private Integer isDelete;
			/**
		 * 
		 */
			private Date createTime;
			/**
		 * 姓名
		 */
			@ApiModelProperty(value="姓名",required = false)
			private String name;
			/**
		 * 考察开始日期
		 */
			@ApiModelProperty(value="考察开始日期",required = false)
			private Date beginExpeditionDate;
			/**
		 * 考察结束日期
		 */
			@ApiModelProperty(value="考察开始日期",required = false)
			private Date endExpeditionDate;
			/**
		 * 考察期天数
		 */
			@ApiModelProperty(value="考察期天数",required = false)
			private Integer expeditionDays;
			/**
		 * 考察状态 
		 */
			@ApiModelProperty(value="考察状态",required = false)
			private Integer expeditionStatus;

			/**
		 * 晋升前职级Id
		 */
			@ApiModelProperty(value="晋升前职级Id",required = false)
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long beforeJobLevelId;

			/**
		 * 晋升后职级Id
		 */
			@ApiModelProperty(value="晋升后职级Id",required = false)
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long afterJobLevelId;
			/**
		 * 薪资组
		 */
			@ApiModelProperty(value="薪资组",required = false)
			@JsonDeserialize(using = LongJsonDeserializer.class)
			@JsonSerialize(using = LongJsonSerializer.class)
			private Long salaryGroupId;
			/**
		 * 固定月薪
		 */
			@ApiModelProperty(value="固定月薪",required = false)
			private BigDecimal monthlySalary;
			/**
		 * 绩效模块
		 */
			@ApiModelProperty(value="绩效模块",required = false)
			private BigDecimal performance;
			/**
		 * 晋升原因
		 */
			@ApiModelProperty(value="晋升原因",required = false)
			private String reason;
	/**
	 * 文件url
	 */
	@ApiModelProperty(value="文件url",required = false)

	private String fileUrl;

		/**
	 	* 申请人姓名
	 	*/
		@ApiModelProperty(value="申请人姓名",required = false)
			private String applier;

		/**
		 * 申请人code
	 	*/
		@ApiModelProperty(value="申请人code",required = false)
			private String applierCode;

	/**
	 * 审批状态 2审批中 3审批通过 4审批拒绝
	 */
	@ApiModelProperty(value="审批状态 2审批中 3审批通过 4审批拒绝",required = false)
	private Integer status;

	@ApiModelProperty(value="晋升种类 0晋升 1降级",required = false)
	@NotNull(message = "晋升种类不能为空")
	private Integer promotionKind;

	@ApiModelProperty(value="薪资组分配情况，0:未分配，1：已分配",required = false)
	private Integer isDistribute;

	/**
	 * bmp审核链接
	 */
	@ApiModelProperty(value="bmp审核链接")
	private String checkUrl;

	/**
	 * 消息推送状态： 0未推送 1已推送
	 */
	@ApiModelProperty(value="消息推送状态： 0未推送 1已推送")
	private Integer isRemind;
	/**
	 * 是否自助端发起 0：否 1：是
	 */
	@ApiModelProperty(value="是否自助端发起 0：否 1：是")
	private Integer isSelf;
	@ApiModelProperty(value="晋升前职级类型",required = false)
	private String beforeJobType;

	@ApiModelProperty(value="晋升后职级类型",required = false)
	private String afterJobType;

	@JsonDeserialize(using = LongJsonDeserializer.class)
	@JsonSerialize(using = LongJsonSerializer.class)
	private Long unitId;


}
